# main.py
import os
from docx import Document
from template_processor import load_template, extract_prompts_from_doc
from ai_content_generator import AIContentGenerator
from document_filler import fill_document_with_content

# 定义模板文件和输出文件夹的路径
TEMPLATES_DIR = "templates"
GENERATED_BIDS_DIR = "generated_bids"
DEFAULT_TEMPLATE_NAME = "default_template.docx"

def ensure_dir_exists(dir_path):
    """确保目录存在，如果不存在则创建"""
    if not os.path.exists(dir_path):
        os.makedirs(dir_path)
        print(f"目录已创建: {dir_path}")

def create_default_template_if_not_exists(templates_folder):
    """如果默认模板不存在，则创建一个简单的默认模板"""
    default_template_path = os.path.join(templates_folder, DEFAULT_TEMPLATE_NAME)
    if not os.path.exists(default_template_path):
        print(f"默认模板不存在，正在创建: {default_template_path}")
        doc = Document()
        doc.add_heading('标书文档', level=0)
        doc.add_heading('第一部分：项目概述', level=1)
        doc.add_paragraph("{{提示:请详细描述项目背景、目标与主要内容}}")
        doc.add_heading('第二部分：解决方案', level=1)
        doc.add_paragraph("{{提示:请阐述拟采用技术方案、实施计划和预期效果}}")
        doc.add_heading('第三部分：公司介绍', level=1)
        doc.add_paragraph("{{提示:请介绍公司的基本情况、资质和相关经验}}")
        doc.add_heading('第四部分：报价方案', level=1)
        doc.add_paragraph("{{提示:请提供详细的报价清单和支付方式}}")
        doc.add_heading('第五部分：服务承诺', level=1)
        doc.add_paragraph("{{提示:请说明服务内容、质量保证和售后支持}}")
        doc.save(default_template_path)
        print(f"默认模板已创建并保存: {default_template_path}")
    return default_template_path

def process_bid_document(template_path, output_filename):
    """处理单个标书文档的完整流程"""
    print(f"开始处理标书，使用模板: {template_path}")

    # 1. 加载模板
    doc = load_template(template_path)
    if not doc:
        return

    # 2. 提取提示词
    prompts = extract_prompts_from_doc(doc)
    if not prompts:
        print("模板中未找到任何提示词。如果您希望AI生成内容，请在模板中使用 {{提示:您的需求}} 格式添加提示。")
        # 即使没有提示词，也保存一份副本，或根据需求决定是否继续
        # filled_doc = doc # 或者直接返回，不生成文件
    else:
        print("从模板中提取到的提示词:")
        for p in prompts:
            print(f"- {p}")

        # 3. 初始化AI内容生成器 (此处使用模拟的)
        ai_generator = AIContentGenerator(api_key="sk-buryitlbkeysialxudanbgitkrjwffwbqlgavkizxxegzomp") # 后续可配置API Key等

        # 4. 为每个提示词生成内容
        generated_content_map = {}
        print("\n开始为提示词生成内容...")
        for prompt_text in prompts:
            ai_text = ai_generator.generate_content(prompt_text)
            generated_content_map[prompt_text] = ai_text
            # 原代码
            # print(f"  提示: '{prompt_text}' -> AI生成: '{ai_text[:50]}...'" )

            # 修改后
            if ai_text:
                display_text = ai_text[:50] + "..." if len(ai_text) > 50 else ai_text
            else:
                display_text = "（无有效生成内容）"
            print(f"  提示: '{prompt_text}' -> AI生成: '{display_text}'" )

        # 5. 将生成的内容填充回文档
        print("\n开始将AI生成的内容填充回文档...")
        filled_doc = fill_document_with_content(doc, generated_content_map)

    # 6. 保存最终文档
    ensure_dir_exists(GENERATED_BIDS_DIR)

    # 生成唯一文件名，避免覆盖
    base_name, ext = os.path.splitext(output_filename)
    timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
    unique_filename = f"{base_name}_{timestamp}{ext}"
    output_path = os.path.join(GENERATED_BIDS_DIR, unique_filename)

    try:
        filled_doc.save(output_path)
        print(f"\n处理完成！生成的标书已保存到: {output_path}")
    except Exception as e:
        print(f"错误：保存填充后的文档失败。原因: {e}")

if __name__ == "__main__":
    import datetime
    print("AI标书自动生成工具启动")

    # 确保工作目录存在
    ensure_dir_exists(TEMPLATES_DIR)
    ensure_dir_exists(GENERATED_BIDS_DIR)

    # 检查并创建默认模板
    default_template_file_path = create_default_template_if_not_exists(TEMPLATES_DIR)

    # 演示：使用默认模板生成一个标书
    print("\n--- 演示：使用默认模板生成标书 ---")
    process_bid_document(default_template_file_path, "generated_bid_from_default.docx")

    # 演示：如何使用自定义模板 (假设用户在 templates 文件夹下放置了 custom_template.docx)
    custom_template_path = os.path.join(TEMPLATES_DIR, "custom_template.docx")
    if os.path.exists(custom_template_path):
        print("\n--- 演示：使用自定义模板生成标书 ---")
        process_bid_document(custom_template_path, "generated_bid_from_custom.docx")
    else:
        print(f"\n提示：如需测试自定义模板，请在 '{TEMPLATES_DIR}' 目录下放置一个名为 'custom_template.docx' 的文件，")
        print("并在其中使用 '{{提示:您的内容描述}}' 格式添加提示词。")

    print("\nAI标书自动生成工具运行结束。")